
#region USING STATEMENTS

using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;

#endregion USING STATEMENTS

namespace BrickBreaker.Core
{
    public abstract class BBSprite
    {

		#region DATA_MEMBERS
        //
        protected Texture2D texture;
        //
        protected Vector2 position;
        protected Vector2 size;
        protected Vector2 center;
        //protected Vector2 centerOffset;
        protected Vector2 speed;
        protected Vector2 direction;
        //
        #endregion DATA_MEMBERS



        #region PROPERTIES
        //
        public abstract  Texture2D Texture { get; set; }
        //
        public abstract Vector2 Position { get; set; }
        //public abstract Vector2 Offset { get; }//set; }
        public abstract Vector2 Size { get; set; }
        public abstract Vector2 Center { get; } // set; }
        public abstract Vector2 Speed { get; set; }
        public abstract Vector2 Direction { get; set; }
        //
        #endregion PROPERTIES


        
        #region ABSTRACT_METHODS
        //
        /// <summary>
        /// Abstract method to ensure the direction of the sprite is normalized.
        /// </summary>
        public abstract void DirectionNormalize();
        //
        #endregion ABSTRACT_METHODS


        //////////////////////////////////////////////////////////////////////////
		//Abstract classes can have Constructors, in this project there is 
        //no need since all instance variables are set in derived class
        //////////////////////////////////////////////////////////////////////////

	}//end class
}//end namespace
